package com.party.api.service.wechat;

import com.party.api.dto.wechat.requst.CustomRequest;
import com.party.api.dto.wechat.requst.MaterialListRequest;
import com.party.api.dto.wechat.requst.MenuRequest;
import com.party.api.dto.wechat.requst.XcxQrCodeRequest;
import com.party.api.dto.wechat.response.GetMenuResponse;
import com.party.api.dto.wechat.response.MaterialListResponse;
import com.party.api.dto.wechat.response.Response;
import com.party.api.dto.wechat.response.UploadTempMediaResponse;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;

/**
 * 微信接口服务
 * Created by wei.li
 *
 * @date 2017/8/28 0028
 * @time 11:23
 */
public interface IWechatService {

    /**
     * 创建微信菜单
     * @param menuRequest 请求参数
     * @param accessToken 公众号令牌
     * @return 响应参数
     */
    Response createMenu(MenuRequest menuRequest, String accessToken);


    /**
     * 获取菜单
     * @param accessToken 公众号令牌
     * @return 响应参数
     */
    GetMenuResponse getMenu(String accessToken);

    /**
     * 发送客服消息
     * @param customRequest 请求参数
     * @param accessToken 公众号令牌
     * @return 响应参数
     */
    Response customSend(CustomRequest customRequest, String accessToken);

    /**
     * 删除微信菜单
     * @param accessToken 公众号令牌
     * @return 操作结果
     */
    boolean deleteMenu(String accessToken);

    /**
     * 获取永久素材列表
     * @param req 请求的素材列表
     * @param accessToken
     * @return 素材列表的具体内容
     */
    MaterialListResponse getMaterialList(MaterialListRequest req, String accessToken);

    /**
     * 生成小程序的二维码
     *
     * @param qrCodeRequest 请求参数
     * @param accessToken   微信令牌
     * @return
     */
    InputStream createMiniProgramQrCode(XcxQrCodeRequest qrCodeRequest, String accessToken);

    UploadTempMediaResponse uploadTempMedia(File file, String accessToken, String type) throws IOException;
}
